<?php

/**
 * Esta clase extiende de Zend_Db_Table_Abstract para el manejo de tablas de la DB
 * AL instanciar se puede manipular los datos de la tabla como si fuera un objeto.
 * El namespaces es Application_Model_
 * @author Ezequiel Cuccorese <cuccoed@gmail.com>
 * 
 */
class Application_Model_Post extends Zend_Db_Table_Abstract {

    //Indicamos el nombre de la table al manejar
    protected $_name = 'posts';
    //Indicamos la primary Key para que la aplicacion sepa.
    protected $_primary = 'id';

    /**
     * Devuelve todos los datos de la tabla
     */
    public function getAll() {

        //fetchAll devuelve todos los datos de la tabla.
        return $this->fetchAll();
    }

    /**
     * Guarda en la base de datos lo que viene del controller
     * @param type $dataFromController recibe los datos del controlador
     */
    public function save($dataFromController, $id = null) {

        if(is_null($id)){
        $row = $this->createRow();
        }else{
            $row= $this->getRow($id);
        }
        
        //Esto se debe hacer si los nombres de los elementos del form son 
        //diferentes a lo de la base de dato
        //$row->title = $dataFromController['title'];
        //$row->full_text = $dataFromController['full_text']; x
        //Si se tienen los nombres de los elementos iguales al form se puede hacer de la sig forma.
        $row->setFromArray($dataFromController);

        return $row->save();
    }

    /**
     * Busqueda de los datos en la DB
     * 
     * @param type $id ID de la base de dato (primary key)
     * @return type devuelve un array con todos los datos de la fila de la DB
     */
    public function getRow($id) {
        $id = (int) $id;
        
        //buscamos el id en la DB y devolvemos el row completo.
        return $this->find($id)->current();
    }
}